home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / MAZE.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  3.1 KB  |  201 lines

  1. 1  ' MAZE - Taken from the DG version of the same name
  2. 2  ' Will Fastie - 16 Jan 82
  3. 3  KEY OFF: CLS
  4. 4  PROG$="MAZE  v0.00  17 Jan 82"
  5. 5  PRINT PROG$: PRINT
  6. 6  PRINT "Where should the MAZE output go?"
  7. 7  PRINT
  8. 8  PRINT "  1 - Display
  9. 9  PRINT "  2 - Printer"
  10. 10  PRINT
  11. 11  INPUT"      Enter selection:  ",AN
  12. 12  IF 1 > AN OR AN > 2 THEN 11
  13. 20  PRINT
  14. 21  INPUT "Enter dimensions, height and width:  ",V,H
  15. 22  IF 2>H OR H>23 OR 2>V OR V>23 THEN 21
  16. 30  RV=VAL(LEFT$(TIME$,2))+VAL(RIGHT$(TIME$,2))+VAL(MID$(TIME$,4,2))
  17. 32  RV=RV+VAL(MID$(DATE$,3,2))
  18. 34  RANDOMIZE(RV)
  19. 40  IF AN=1 THEN OPEN "scrn:"  FOR OUTPUT AS 1
  20. 41  IF AN=2 THEN OPEN "lpt1:"  FOR OUTPUT AS 1
  21. 50  DIM W(26,26), V(26,26)
  22. 100  CLS
  23. 240  Q=0
  24. 250  Z=0
  25. 260  X=INT(RND*H+1)
  26. 270  FOR I = 1 TO H
  27. 280    IF I=X THEN 310
  28. 290    PRINT #1, "|--";
  29. 300    GOTO 320
  30. 310    PRINT #1, "|  ";
  31. 320  NEXT I
  32. 330  PRINT #1, "|"
  33. 340  C=1
  34. 350  W(X,1)=C
  35. 360  C=C+1
  36. 370  R=X
  37. 380  S=1
  38. 390  GOTO 500
  39. 400  IF R<>H THEN 480
  40. 410  IF S<>V THEN 450
  41. 420  R=1
  42. 430  S=1
  43. 440  GOTO 490
  44. 450  R=1
  45. 460  S=S+1
  46. 470  GOTO 490
  47. 480  R=R+1
  48. 490  IF W(R,S)=0 THEN 400
  49. 500  IF R-1=0 THEN 950
  50. 510  IF W(R-1,S)<>0 THEN 950
  51. 520  IF S-1=0 THEN 720
  52. 530  IF W(R,S-1)<>0 THEN 720
  53. 540  IF R=H THEN 600
  54. 550  IF W(R+1,S)<>0 THEN 600
  55. 560  X=INT(RND*3+1)
  56. 570  IF X=1 THEN 1380
  57. 580  IF X=2 THEN 1450
  58. 590  IF X=3 THEN 1520
  59. 600  IF S<>V THEN 640
  60. 610  IF Z=1 THEN 690
  61. 620  Q=1
  62. 630  GOTO 650
  63. 640  IF W(R,S+1)<>0 THEN 690
  64. 650  X=INT(RND*3+1)
  65. 660  IF X=1 THEN 1380
  66. 670  IF X=2 THEN 1450
  67. 680  IF X=3 THEN 1610
  68. 690  X=INT(RND*2+1)
  69. 700  IF X=1 THEN 1380
  70. 710  IF X=2 THEN 1450
  71. 720  IF R=H THEN 860
  72. 730  IF W(R+1,S)<>0 THEN 860
  73. 740  IF S<>V THEN 780
  74. 750  IF Z=1 THEN 830
  75. 760  Q=1
  76. 770  GOTO 790
  77. 780  IF W(R,S+1)<>0 THEN 830
  78. 790  X=INT(RND*3+1)
  79. 800  IF X=1 THEN 1380
  80. 810  IF X=2 THEN 1520
  81. 820  IF X=3 THEN 1610
  82. 830  X=INT(RND*2+1)
  83. 840  IF X=1 THEN 1380
  84. 850  IF X=2 THEN 1520
  85. 860  IF S<>V THEN 900
  86. 870  IF Z=1 THEN 940
  87. 880  Q=1
  88. 890  GOTO 910
  89. 900  IF W(R,S+1)<>0 THEN 940
  90. 910  X=INT(RND*2+1)
  91. 920  IF X=1 THEN 1380
  92. 930  IF X=2 THEN 1610
  93. 940  GOTO 1380
  94. 950  IF S-1=0 THEN 1200
  95. 960  IF W(R,S-1)<>0 THEN 1200
  96. 970  IF R=H THEN 1110
  97. 980  IF W(R+1,S)<>0 THEN 1110
  98. 990  IF S<>V THEN 1030
  99. 1000  IF Z=1 THEN 1080
  100. 1010  Q=1
  101. 1020  GOTO 1040
  102. 1030  IF W(R,S+1)<>0 THEN 1080
  103. 1040  X=INT(RND*3+1)
  104. 1050  IF X=1 THEN 1450
  105. 1060  IF X=2 THEN 1520
  106. 1070  IF X=3 THEN 1610
  107. 1080  X=INT(RND*2+1)
  108. 1090  IF X=1 THEN 1450
  109. 1100  IF X=2 THEN 1520
  110. 1110  IF S<>V THEN 1150
  111. 1120  IF Z=1 THEN 1190
  112. 1130  Q=1
  113. 1140  GOTO 1160
  114. 1150  IF W(R,S+1)<>0 THEN 1190
  115. 1160  X=INT(RND*2+1)
  116. 1170  IF X=1 THEN 1450
  117. 1180  IF X=2 THEN 1610
  118. 1190  GOTO 1450
  119. 1200  IF R=H THEN 1310
  120. 1210  IF W(R+1,S)<>0 THEN 1310
  121. 1220  IF S<>V THEN 1260
  122. 1230  IF Z=1 THEN 1300
  123. 1240  Q=1
  124. 1250  GOTO 1460
  125. 1260  IF W(R,S+1)<>0 THEN 1300
  126. 1270  X=INT(RND*2+1)
  127. 1280  IF X=1 THEN 1520
  128. 1290  IF X=2 THEN 1610
  129. 1300  GOTO 1520
  130. 1310  IF S<>V THEN 1350
  131. 1320  IF Z=1 THEN 1370
  132. 1330  Q=1
  133. 1340  GOTO 1360
  134. 1350  IF W(R,S+1)<>0 THEN 1370
  135. 1360  GOTO 1610
  136. 1370  GOTO 1810
  137. 1380  W(R-1,S)=C
  138. 1390  C=C+1
  139. 1400  V(R-1,S)=2
  140. 1410  R=R-1
  141. 1420  IF C=H*V+1 THEN 1820
  142. 1430  Q=0
  143. 1440  GOTO 500
  144. 1450  W(R,S-1)=C
  145. 1460  C=C+1
  146. 1470  V(R,S-1)=1
  147. 1480  S=S-1
  148. 1490  IF C=H*V+1 THEN 1820
  149. 1500  Q=0
  150. 1510  GOTO 500
  151. 1520  W(R+1,S)=C
  152. 1530  C=C+1
  153. 1540  IF V(R,S)=0 THEN 1570
  154. 1550  V(R,S)=3
  155. 1560  GOTO 1580
  156. 1570  V(R,S)=2
  157. 1580  R=R+1
  158. 1590  IF C=H*V+1 THEN 1820
  159. 1600  GOTO 950
  160. 1610  IF Q=1 THEN 1710
  161. 1620  W(R,S+1)=C
  162. 1630  C=C+1
  163. 1640  IF V(R,S)=0 THEN 1670
  164. 1650  V(R,S)=3
  165. 1660  GOTO 1680
  166. 1670  V(R,S)=1
  167. 1680  S=S+1
  168. 1690  IF C=H*V+1 THEN 1820
  169. 1700  GOTO 500
  170. 1710  Z=1
  171. 1720  IF V(R,S)=0 THEN 1760
  172. 1730  V(R,S)=3
  173. 1740  Q=0
  174. 1750  GOTO 1810
  175. 1760  V(R,S)=1
  176. 1770  Q=0
  177. 1780  R=1
  178. 1790  S=1
  179. 1800  GOTO 490
  180. 1810  GOTO 400
  181. 1820  FOR J = 1 TO V
  182. 1830    PRINT #1,"|";
  183. 1840    FOR I = 1 TO H
  184. 1850      IF V(I,J)<2 THEN 1880
  185. 1860      PRINT #1, "   ";
  186. 1870      GOTO 1890
  187. 1880      PRINT #1, "  |";
  188. 1890    NEXT I
  189. 1900    PRINT #1,
  190. 1910    FOR I = 1 TO H
  191. 1920      IF V(I,J)=0 THEN 1960
  192. 1930      IF V(I,J)=2 THEN 1960
  193. 1940      PRINT #1, "|  ";
  194. 1950      GOTO 1970
  195. 1960      PRINT #1, "|--";
  196. 1970    NEXT I
  197. 1980    PRINT #1, "|"
  198. 1990  NEXT J
  199. 2000  CLOSE
  200. 2010  END
  201.